Also momentan stehen noch keine Folien drin für dieses Semester, sondern der Chef stellt sie dann,
oder gibt sie mir diese Woche, ich stelle sie dann rein, aber wir verwenden einfach die vom letzten
Jahr, sind dieselben, einfach nur die Nummerierung ist anders. Ja, also heute geht es um parallel
Rechenarchitekturen und das meiste davon wird euch schon bekannt vorkommen, weil habt ihr ja
schon die ganze Zeit gehabt, auch vor allem in der Rechnerübung und wir gehen trotzdem noch
das Ganze durch, um sich das noch ein bisschen in Erinnerung zu holen, weil es einige, die das
schon vergessen haben, was wir gemacht haben. Wir fangen quasi mit pipeline datenparallel an und
da geht es auch schon los, irgendwo weiter unten. Die Definition ist eigentlich jedem klar, oder,
was ein parallel Rechner ist. Michael, weißt du was parallel Rechner ist? Ohne abzulehnen,
einfach mit eigenen Worten. Name, Dax und parallel? Richtig, also egal was für eine Form das ist,
es kann eben eine funktionale Pipeline sein, wo die Instruktionen in verschiedenen Stufen parallel
abgearbeitet werden, oder aber so in Rechenwerke, die parallel arbeiten, oder eben richtige Cores,
die parallel zu einander arbeiten, oder komplette Rechner, eben Cluster Computing, falls einige von
euch schon sowas mal gemacht haben, ist auch ein spannendes Thema, oder eben auch Grids, Cloud und
was man heute nicht alles so hat. Genau, blablabla, eingebettete Systeme, da gibt es auch welche.
Kommt euch eins so in den Sinn, spontan? Es ist ja nicht richtig eingebildet, man sieht ja die
Devices und die FPGAs kann man auch noch programmieren, nachdem man seine Architektur
darauf gebügelt hat. Mein Lieblingsbeispiel ist Kaffeemaschine oder Auto, richtig, weil man muss
ja mehrere Ports überwachen, da gibt es für jeden Port eventuell einen eigenen Baustein und die
arbeiten alle gleichzeitig. Im Auto sind das halt zum Beispiel irgendwelche ASICs oder Mikrocontroller,
der eine ist für die Motoransteuerung zuständig, der andere ist für BS, der andere ist für ESP,
der andere ist noch für was und die arbeiten alle parallel, eingebettetes Parallelsystem.
Superskalare Position, das ist das mit dem Pipeline, wenn wir auch noch mehrere Pipelines haben,
quasi mehrere funktionale Rechenwerke, zum Beispiel für Floating-Point-Einheiten,
für Integer und so weiter. VLIF, was ist VLIF gewesen? Schon vergessen?
Wenn ich mehrere gleiche Recheneinheiten nebeneinander habe und durch spezielle Instruktionen die parallel gleichzeitig rechnen lassen kann.
Wodurch wird Parallelität generiert? Ist das die Hardware oder die Software?
Die Software, die die speziellen Befehle nutzt, wo mehrere Rechnungen gleichzeitig ausführen.
Genau, vollkommen richtig. Der Compiler muss quasi den Code analysieren und Befehle zusammenfassen,
damit sie parallel ausgeführt werden können. Mehrfältige Prozession ist klar, SMT, Hyper-Frading,
sonst was solltet ihr eigentlich können. Multi-Kern auch und btc-parallelverarbeitung.
Okay, das ist eigentlich auch klar, wenn wir eine Grafikkarte haben, die arbeitet parallel zu CPU, das ist auch so was.
Michel? Nicht so?
Ist denn da der Multi-Frader eigentlich wirklich dazu?
Ja, weil du hast ja, in dem SMT-Prinzip hast du wirklich mehrere Register-Sätze
und die werden parallel gleichzeitig genutzt und jeder Thread schickt Instruktionen zum Scheduler hin
und der Scheduler guckt hin, wie kann er sie quasi zu den Funktionalen Einheiten weiterleiten.
Und es kann wirklich dann so sein, dass die zum Beispiel die Integer-Einheit von Thread 0 irgendwas rechnet
und die Floating-Point-Einheit von Thread 1.
Die haben natürlich keinen vollständigen Kurs, das ist dann das da.
Aber du hast trotzdem parallel Verarbeitung, weil sie unterschiedliche Instruktionen gleichzeitig haben.
War das dann wirklich das Integer-Wert, sagen wir mal, wenn man an Thread A am Arbeiten während die Floating-Säunen tötet?
Ja, genau. Die schicken einfach ihre Instruktionen, also der Scheduler nimmt sie sich
und dann tut er gucken, wo kann er sich ausführen, nimmt eine freie Einheit und dann einfach nacheinander.
Damit tut man quasi, bei einem Thread hast du nicht so eine starke Auslassung von deinen allen Rechenwerken.
Wenn du aber quasi dieses SMC-Prinzip nimmst, dann lassest du sie stärker aus.
Natürlich muss dein Programm dann so sein, dass der eine Thread etwas anderes macht als der zweite.
Das wäre am besten.
Ansonsten hast du natürlich das By-Planning, was dir ein bisschen den Durchsatz steigert,
aber wenn sie komplett unabhängige Instruktionen machen, dann ist es noch besser.
Presenters
Zugänglich über
Offener Zugang
Dauer
01:03:07 Min
Aufnahmedatum
2013-01-30
Hochgeladen am
2019-04-30 06:59:03
Sprache
de-DE
-
Organisationsaspekte von CISC und RISC-Prozessoren
-
Behandlung von Hazards in Pipelines
-
Fortgeschrittene Techniken der dynamischen Sprungvorhersage
-
Fortgeschritten Cachetechniken, Cache-Kohärenz
-
Ausnutzen von Cacheeffekten
-
Architekturen von Digitalen Signalprozessoren
-
Architekturen homogener und heterogener Multikern-Prozessoren (Intel Corei7, Nvidia GPUs, Cell BE)
-
Architektur von Parallelrechnern (Clusterrechner, Superrechner)
-
Effiziente Hardware-nahe Programmierung von Mulitkern-Prozessoren (OpenMP, SSE, CUDA, OpenCL)
-
Leistungsmodellierung und -analyse von Multikern-Prozessoren (Roofline-Modell)
- Patterson/Hennessy: Computer Organization und Design
-
Hennessy/Patterson: Computer Architecture - A Quantitative Approach
-
Stallings: Computer Organization and Architecture
-
Märtin: Rechnerarchitekturen